#ifndef CLINK_ROUTER_NOTFOUNDHANDLER_H
#define CLINK_ROUTER_NOTFOUNDHANDLER_H

#include "IRouteHandler.h"
#include "../Utils/ResponseUtils.h"
#include "../CLink_Export.h"

namespace CLink
{
namespace Router
{

/**
 * @brief 404错误处理器
 *
 * 用于处理找不到匹配路由的情况，返回404 Not Found响应。
 */
class CLINK_CLASS NotFoundHandler : public IRouteHandler
{
public:
    /**
     * @brief 构造函数
     * @param customMessage 自定义错误消息
     */
    explicit NotFoundHandler(const std::string &customMessage = "");

    /**
     * @brief 处理HTTP请求
     * @param context 请求上下文
     * @return 总是返回true
     */
    bool handle(RequestContext &context) override;

    /**
     * @brief 检查路由是否匹配请求
     * @param context 请求上下文
     * @return 总是返回true，因为这是一个兜底处理器
     */
    bool matches(const RequestContext &context) const override;

    /**
     * @brief 获取路由优先级
     * @return 总是返回最低优先级
     */
    int getPriority() const override;

    /**
     * @brief 设置自定义错误消息
     * @param message 错误消息
     * @return 当前对象的引用，支持链式调用
     */
    NotFoundHandler &setCustomMessage(const std::string &message);

private:
    std::string m_customMessage; ///< 自定义错误消息
};

} // namespace Router
} // namespace CLink

#endif // CLINK_ROUTER_NOTFOUNDHANDLER_H